এসকিউএল ক্রস জয়েন কীওয়ার্ড
CROSS JOIN কীওয়ার্ড উভয় টেবিল (টেবিল1 এবং টেবিল2) থেকে সমস্ত রেকর্ড ফেরত দেয়।
MySQL CROSS JOIN
CROSS JOIN সিনট্যাক্স
SELECT column_name(s)
FROM table1
CROSS JOIN table2;
দ্রষ্টব্য:
CROSS JOIN বিশাল ফলাফল সেট ফিরিয়ে দিতে পারে!
ডেমো ডাটাবেস
এই টিউটোরিয়ালে আমরা সুপরিচিত নর্থওয়াইন্ড নমুনা ডাটাবেস ব্যবহার করব।
নীচে "গ্রাহক" টেবিল থেকে একটি নির্বাচন দেওয়া হল:
| CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
|---|---|---|---|---|---|---|
| 1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
| 2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
| 3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
এবং "অর্ডার" টেবিল থেকে একটি নির্বাচন:
| OrderID | CustomerID | EmployeeID | OrderDate | ShipperID |
|---|---|---|---|---|
| 10308 | 2 | 7 | 1996-09-18 | 3 |
| 10309 | 37 | 3 | 1996-09-19 | 1 |
| 10310 | 77 | 8 | 1996-09-20 | 2 |
মাইএসকিউএল ক্রস যোগদানের উদাহরণ
নিম্নলিখিত SQL বিবৃতি সমস্ত গ্রাহক এবং সমস্ত আদেশ নির্বাচন করে:
SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
CROSS JOIN Orders;
দ্রষ্টব্য:
অন্য টেবিলে মিল থাকুক বা না থাকুক, CROSS JOIN কীওয়ার্ড উভয় টেবিল থেকে সমস্ত মিলে যাওয়া রেকর্ড ফেরত দেয়। সুতরাং, যদি "গ্রাহকদের" মধ্যে এমন সারি থাকে যেগুলির "অর্ডার" এর সাথে কোনো মিল নেই, বা যদি "অর্ডার"-এ এমন সারি থাকে যার "গ্রাহকদের" মধ্যে কোনো মিল নেই, তাহলে সেই সারিগুলিও তালিকাভুক্ত হবে৷
আপনি যদি একটি WHERE ক্লজ যোগ করেন (যদি table1 এবং table2 এর মধ্যে সম্পর্ক থাকে), তাহলে CROSS JOIN INNER JOIN ক্লাসের মতো একই ফলাফল দেবে:
SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
CROSS JOIN Orders
WHERE Customers.CustomerID=Orders.CustomerID;
অনুশীলন করুন
নিম্নলিখিত SQL বিবৃতি বিবেচনা করুন:
SELECT * FROM Orders CROSS JOIN Customers
অর্ডারে 20টি রেকর্ড এবং গ্রাহকদের 10টি রেকর্ড থাকলে, কতটি রেকর্ড ফেরত দেওয়া হবে?